package com.lxx.common;

import java.util.List;
import java.util.Map;

/**
 * 
 * 数据库访问持久化层，基类接口
 * @author linxinxing
 *
 * @param <T> Entity类型
 * @param <K> 主键类型
 */
public interface BaseDao<T, K> {
	
	/**
     * 根据主键删除 
     *
     * @param id 主键
     * @return 影响的记录数
     */
    int deleteByPrimaryKey(K id);
    
    /**
     * 批量删除
     * @param ids ID数组
     * @return 影响的记录数
     */
    int batchDel(K[] ids);

    /**
     * 插入 
     *
     * @param t 对象
     * @return 影响的记录数
     */
    int insertSelective(T t);
    
    /**
     * 批量插入
     * @param entityList 实体列表
     * @return 影响的记录数
     */
    int batchInsert(List<T> entityList);
    
    
    /**
     * 根据主键更新
     *
     * @param t  对象
     * @return 影响的记录数
     */
    int updateByPrimaryKeySelective(T t);
    
    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return 
     */
    T selectByPrimaryKey(K id);


	/**
	 * @param params
	 * @return
	 */
    List<T> query(Map<String, Object> params);

}
